以下是routing的實戰,採用raspberry pi以ethernet接上netgear m2以取得網際網路連線,並啟用wlan0作為ap使用,同時接上usb乙太網路卡,與另一台raspberry pi相連,該raspberry pi也要啟用一個ap,如下圖所示
此時,netgeat Nighthawk m2使用DHCP配發IP給raspberry pi,網段為10.1.254.0/24
,raspberry pi與raspberry pi之間使用固定IP相連,網段為192.168.1.0/24
,上圖中左邊的raspberry pi 4(1)所配發的AP其網段為192.168.2.0\24
,右邊的raspberry pi 4(2)所配發的網段為192.168.3.0/24
,此時該如何建立這個連線呢?
使用hostapd將AP建立起來,由於在預設情況底下會自動建立default routing rule對於nighthawk m2,也就是
default via 10.1.254.253 dev eth0
其中10.1.254.253
為Nighthawk M2的IP,也就是預設要往網際網路的路
此時要新增以下的routing rule,
192.168.1.0
這條路要網eth1
走,不能走eth0
不然找不到raspberry pi 4(2)192.168.2.0
這條路要網wlan0
走,不能走eth0
不然找不到raspberry pi 4(1)所建立的AP底下的設備192.168.3.0
這條路要走eth1
,而且要透過raspberry pi 4(2)轉送,不然會送不到192.168.1.0/24 dev eth1
192.168.2.0/24 dev wlan0 src 192.168.2.1
192.168.3.0/24 via 192.168.1.2 dev eth1
raspberry pi 4(2)就比較簡單一點,預設的東西全部都丟給raspberry pi 4(1)就好,不過他還是要顧好自己家的AP,因此routing會變成下列這樣。
default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0
192.168.3.0/24 dev wlan0 src 192.168.3.1
192.168.2.0/24 via 192.168.1.1 dev eth0
如果不要用routing的話有一個很簡單的做法,可以讓所有機器在同一個網段下,也就是br-lan
,簡而言之即是把網卡bridge起來,raspberry pi 4(1)將eth0
(接M2的乙太網路)、eth1
(USB網卡)、wlan0
都bridge起來,raspberry pi 4(2)的eth0
以及wlan0
bridge起來,此時所有裝置都會變成在同一個subnet底下,接受nighthawk的DHCP封包,此招用在layer2的switching,也就是不要有router來跟你指路到別的地方了,把大家都搬到忠孝東路上,只要大家都在忠孝東路上,就不用使用router來轉送封包了(去網際網路的nighthawk m2還是要活著才行)。